home *** CD-ROM | disk | FTP | other *** search
/ Revista CD Expert 41 / CD Expert nº 41.iso / Tux / tux.exe / tuxracer-win32-0.60 / courses / course_idx.tcl
Text File  |  2000-10-01  |  4KB  |  179 lines

  1.  
  2. #
  3. # Procedure to get course name, author, and par time from course.tcl file.
  4. #
  5. proc get_course_info { } {
  6.     if [catch {open course.tcl r} fileId] {
  7.     puts stderr "Couldn't open course.tcl in [pwd]"
  8.     return {}
  9.     }
  10.  
  11.     set name ""
  12.     set author ""
  13.     set par_time ""
  14.  
  15.     while {[gets $fileId line] >= 0} {
  16.     regexp {tux_course_name *([^;]*)} $line match name
  17.     regexp {tux_course_author *([^;]*)} $line match author
  18.     regexp {tux_par_time *([^;]*)} $line match par_time
  19.  
  20.     if { $author != "" && $name != "" && $par_time != "" } {
  21.         break;
  22.     }
  23.     }
  24.  
  25.     if { $author == "" } {
  26.     set author "Unknown"
  27.     }
  28.  
  29.     if { $name == "" } {
  30.     set name "Unknown"
  31.     }
  32.  
  33.     if { $par_time == "" } {
  34.         set par_time 120.0
  35.     } 
  36.  
  37.     eval "set name $name"
  38.     eval "set author $author"
  39.     eval "set par_time $par_time"
  40.  
  41.     return [list $name $author $par_time];
  42. }
  43.  
  44. set cwd [pwd]
  45. tux_goto_data_dir
  46.  
  47. tux_load_texture noicon textures/noicon.rgb
  48.  
  49. cd courses
  50.  
  51. tux_load_texture no_preview common/nopreview.rgb
  52. tux_bind_texture no_preview no_preview
  53.  
  54. #
  55. # Bind preview textures if they exist
  56. #
  57. foreach course [glob -nocomplain *] {
  58.     if { $course == "common" || $course == "contrib" } {
  59.     continue;
  60.     }
  61.     if [file exists "$course/preview.rgb"] {
  62.     tux_load_texture $course "$course/preview.rgb"
  63.     tux_bind_texture $course $course
  64.     }
  65. }
  66.  
  67. cd contrib;
  68.  
  69. foreach course [glob -nocomplain *] {
  70.     if [file exists "$course/preview.rgb"] {
  71.     tux_load_texture "contrib/$course" "$course/preview.rgb"
  72.     tux_bind_texture "contrib/$course" "contrib/$course"
  73.     }
  74. }
  75.  
  76. cd ..
  77.  
  78. #
  79. # Build list of contributed courses in contrib
  80. #
  81. cd contrib
  82. set contrib_course_list {}
  83. foreach course [glob -nocomplain *] {
  84.     if [catch {cd $course}] {
  85.     puts stderr "Couldn't change directory to $course"
  86.     continue;
  87.     }
  88.  
  89.     set course_info [get_course_info]
  90.  
  91.     cd ..
  92.  
  93.     set description "Contributed by: [lindex $course_info 1]"
  94.     
  95.     lappend contrib_course_list \
  96.         [list -course "contrib/$course" -name [lindex $course_info 0] \
  97.         -description $description -par_time [lindex $course_info 2] ] 
  98. }
  99. cd ..
  100.  
  101. tux_open_courses [concat \
  102.     { \
  103.     { \
  104.         -course frozen_river -name "Frozen River" \
  105.             -description "Keep your speed down to collect herring!" \
  106.                     -par_time 80.0 \
  107.     } \
  108.     { \
  109.         -course path_of_daggers -name "Path of Daggers" \
  110.             -description "Big spikes may prove to be the least of your worries on this course.  Muliple paths allow you to take low or high roads, each with their own challenges." \
  111.                     -par_time 70.0 \
  112.     } \
  113.     { \
  114.         -course bunny_hill -name "Bunny Hill" \
  115.             -description "Use clever turning to conquer the Bunny Hill." \
  116.                     -par_time 40.0 \
  117.     } \
  118.     { \
  119.         -course twisty_slope -name "Twisty Slope" \
  120.             -description "Tight twists make grabbing herring difficult.  Hard turns will lead you to victory." \
  121.                     -par_time 40.0 \
  122.     } \
  123.     { \
  124.         -course bumpy_ride -name "Bumpy Ride" \
  125.             -description "This hill has a series of ramps tackle.  Make sure to line yourself up before getting airborne." \
  126.                     -par_time 40.0 \
  127.     } \
  128.     } \
  129.     $contrib_course_list \
  130. ]
  131.  
  132. tux_load_texture herring_run_icon common/herringrunicon.rgb 0
  133. tux_load_texture cup_icon common/cupicon.rgb 0
  134.  
  135. tux_events {
  136.     { 
  137.     -name "Herring Run" -icon herring_run_icon -cups {
  138.         { 
  139.         -name "Canadian Cup" -icon cup_icon -races {
  140.             {
  141.             -course bunny_hill \
  142.                 -name "Bunny Hill" \
  143.                 -description "Use clever turning to conquer the Bunny Hill." \
  144.                 -herring { 23 23 23 23 } \
  145.                 -time { 37 35 32 30 } \
  146.                 -score { 0 0 0 0 } \
  147.                 -mirrored no -conditions sunny \
  148.                 -windy no -snowing no
  149.             }
  150.             {
  151.             -course twisty_slope \
  152.                 -name "Twisty Slope" \
  153.                 -description "Tight twists make grabbing herring difficult.  Hard turns will lead you to victory." \
  154.                 -herring { 24 24 24 24 } \
  155.                 -time { 43 40 34 31.5 } \
  156.                 -score { 0 0 0 0 } \
  157.                 -mirrored no -conditions sunny \
  158.                 -windy no -snowing no
  159.             }
  160.             {
  161.             -course bumpy_ride \
  162.                 -name "Bumpy Ride" \
  163.                 -description "This hill has a series of ramps tackle.  Make sure to line yourself up before getting airborne." \
  164.                 -herring { 18 18 18 18 } \
  165.                 -time { 30 28 27 26 } \
  166.                 -score { 0 0 0 0 } \
  167.                 -mirrored no -conditions sunny \
  168.                 -windy no -snowing no
  169.             }
  170.         }
  171.         }
  172.     }
  173.     }
  174. }
  175.     
  176.  
  177. cd $cwd
  178.  
  179.